from django.shortcuts import render
from django.views import View
from areas.models import AreaModles
from django.http import JsonResponse
from utils.response_code import RETCODE
from django.core.cache import cache

# 获取全国城市名称
class SetAreasView(View):
    def get(self , request):

        # 从缓存中获取数据
        province_list = cache.get('province_list')

        # 判断是否携带参数
        area_id = request.GET.get('area_id')
        if not area_id:

            # 如果数据不存在获取数据
            if not province_list:
                province_modle_list = AreaModles.objects.filter(parent_id__isnull=True)
                province_list = []
                for province_modle in province_modle_list:
                    province_dict = {
                        'id' : province_modle.id,
                        'name' : province_modle.area_name,
                    }
                    province_list.append(province_dict)

                cache.set('province_list' , province_list , 3600)

                """
                {
                    'code' : 200,
                    'errmsg' : "OK",
                    'province_list' : [
                        { 'id' : 1 ,'name' : '北京'},
                        { 'id' : 2 ,'name' : '上海'},
                        { 'id' : 3 ,'name' : '南京'},
                        .......
                          
                }
                """

            return JsonResponse({
                'code' : RETCODE.OK,
                'errmsg' : "OK",
                'province_list' : province_list
            })



        else:
            sub_data = cache.get(f'sub_data_{area_id}')

            if not sub_data:
                # 获取到当前选择的省份
                sub_province = AreaModles.objects.get(id = area_id)

                # 获取当前省份的所有市区
                sub_area_list = sub_province.subs.all()

                sub_list = []
                for sub_area in sub_area_list:
                    sub_area_dict = {
                        'id' : sub_area.id,
                        'name' : sub_area.area_name,
                    }
                    sub_list.append(sub_area_dict)

                sub_data = {
                    'id' :sub_province.id,
                    'name' : sub_province.area_name,
                    'subs' : sub_list
                }
                cache.set(f'sub_data_{area_id}' , sub_data , 3600)

            return JsonResponse({
                'code' : RETCODE.OK,
                'errmsg' : "OK",
                'sub_data' : sub_data
            })





